﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //编写一个程序，以实现机器人的层次结构，此层次结构将至少包含抽象类机器人类Robot、炒菜机器人类CookRobot、传菜机器人类DeliveryRobot。
            //Robot类应包含机器人姓名name字段、机器人工作的方法Working()，该方法应该在子类中被实现，机器人工作的方式很多，所以Working()方法应该被定义为抽象方法。

            //可以在CookRobot中添加一个代表菜的类型的字段，用枚举类型；在DeliveryRobot中添加一个代表连续工作时长的字段hours。
            //CookRobot和DeliveryRobot应实现具体的Working()方法。

            //在主类中定义一个方法，形参数据类型是string，返回值数据类型是Robot，
            //方法中实现如果传入的字符串是“炒菜”，那就返回CookRobot的实例（当然是要用Robot的引用指向的），如果传入的字符串是“传菜”，那就返回DeliveryRobot的实例。

            //Main方法中：用户输入所选择的机器人的功能，根据用户的输入Robot执行对应的功能。

            //Robot r = new cookRobot(Food.白扒通天翅, "张三", robotType.CookRobot);
            //r.Working();
            //Robot r1 = new DeliveryRobot();
            //r1.Working();

            means("炒菜");

            means("传菜");
        }

        public static Robot means(string s)
        {
            Robot r;
            switch (s)
            {
                case "炒菜":
                    
                    r = new cookRobot(foods(),"厨师",robotType.CookRobot);
                    r.Working();
                    break;
                case "传菜":
                    r = new DeliveryRobot(Speed(), "服务员",robotType.deliveryRobot);
                    r.Working();
                    break;
                default:
                    r = new cookRobot(foods(), "厨师", robotType.CookRobot);
                    r.Working();
                    break;
            }

            return r;
        }
        public static Food  foods() 
        {
            Console.WriteLine("请选择菜名 ： 1. 玉带虾仁2. 白扒通天翅3.红扒鱼翅 4.孔府一品锅 ");
            Food b;
            int a = int.Parse(Console.ReadLine());
            switch (a)
            {
                case 1:
                    b = Food.玉带虾仁;
                    break;
                case 2:
                    b = Food.白扒通天翅;
                    break;
                case 3:
                    b = Food.红扒鱼翅;
                    break;
                case 4:
                    b = Food.孔府一品锅;
                    break;
                default:
                    b = Food.玉带虾仁;
                    break;
            }


            return b;
        }
        public static speed Speed()
        {
            Console.WriteLine("请选择速度 ： 1. 慢2. 快 3.很快 4.超级快 ");
            speed b;
            int a = int.Parse(Console.ReadLine());
            switch (a)
            {
                case 1:
                    b = speed.慢;
                    break;
                case 2:
                    b = speed.快;
                    break;
                case 3:
                    b = speed.很快;
                    break;
                case 4:
                    b = speed.超级快;
                    break;
                default:
                    b = speed.快;
                    break;
            }


            return b;
        }



    }

}
